package biz

import (
	"time"

	"github.com/go-kratos/kratos/v2/log"
)

// Class 定义班级结构体
type Class struct {
	ClassId   string    `json:"class_id" gorm:"type:varchar(255);not null;unique;primaryKey;comment:班级ID"`
	ClassName string    `json:"class_name" gorm:"type:varchar(255);unique;comment:班级名称"`
	TeacherID string    `json:"teacher_id" gorm:"type:varchar(255);not null;comment:教师ID"`
	CreatedAt time.Time `json:"created_at" gorm:"comment:创建时间"`
	UpdatedAt time.Time `json:"updated_at" gorm:"comment:更新时间"`
}

// ClassRepo 定义班级服务接口
type ClassRepo interface {
	// ClassService 创建班级
	CreateClass(request *CreateClassRequest) (*CreateClassResponse, error)

	// DeleteClass 删除班级
	DeleteClass(classID string) error

	// UpdateClass 修改班级信息
	UpdateClass(request *CreateClassRequest, classID string) error

	// GetClassInfo 获取班级信息
	GetClassInfo(classID string) (*GetClassResponse, error)
}

type ClassUsecase struct {
	repo ClassRepo
	log  *log.Helper
}

// CreateClassRequest 请求格式
type CreateClassRequest struct {
	ClassName string `json:"class_name"`
	TeacherID string `json:"teacher_id"`
}

// CreateClassResponse 响应格式
type CreateClassResponse struct {
	Message string `json:"message"`
	ClassID string `json:"class_id"`
}

// GetClassResponse 响应格式
type GetClassResponse struct {
	ClassID   string `json:"class_id"`
	ClassName string `json:"class_name"`
	TeacherID string `json:"teacher_id"`
}
